package qgs.zisu.javaconcurrency.javaconcurrency.chapter4_DaemonThread;

/**
 * @Author: 蔡翔
 * @Date: 2019/9/22 11:55
 * @Version 1.0
 */
// 某个线程一般抛出个一场就会死掉的。
public class DaemonThread2 {
    public static void main(String[] args) {
        Thread t = new Thread(()->{
            Thread innerThread = new Thread(()->{
               try {
                   while (true){
                       System.out.println("do something for health check");
                       Thread.sleep(10_000);
                   }

               }catch (InterruptedException e){
                   e.printStackTrace();
               }
            });
            // 如果把innerThread 设置为守护线程，那么当t线程关闭以后，就不用手动的去关闭innerThread（父线程退了，它就退了），也即 即使守护线程在运行jvm还是会退出
            // 如果子线程是非守护线程，那么父线程退出后，它是不会退出的（jvm不会回收子线程）。
            //innerThread.setDaemon(true);
            innerThread.start();
            try {
                // t 线程 sleep 1s 就退出了（执行完就退出了）。
                Thread.sleep(1_000);
                System.out.println("T_thread finish done.");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }

        });
        //t.setDaemon(true);
        t.start();
    }
}
